import axios from 'axios'
import {
  storage
} from '../utils/storage'
import router from '../router'
import Vue from 'vue'
import element from '../../src/elementUi/index'
Vue.use(element)
axios.defaults.timeout = 1000 * 30
// axios.defaults.headers.post['Content-Type'] = 'multipart/form-data'

const baseUrl = "/apis"

// http request 请求拦截器，有token值则配置上token值
// axios.interceptors.request.use(
//   config => {
//     if (vm.$route.path != '/login' && vm.$route.path != '/regist') {
//       const token = storage.getToken()
//       if (!token) { // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
//         router.push('/login')
//       }
//     }
//     return config;
//   },
//   error => {
//     return Promise.reject(error);
//   });

// http response 服务器响应拦截器，这里拦截401错误，并重新跳入登页重新获取token
// axios.interceptors.response.use(
//   response => {
//     return response;
//   },
//   error => {
//     if (error.response) {
//       switch (error.response.status) {
//         case 401:
//           // 这里写清除token的代码
//           router.replace({
//             path: 'login',
//             query: {
//               redirect: router.currentRoute.fullPath
//             } //登录成功后跳入浏览的当前页面
//           })
//       }
//     }
//     return Promise.reject(error.response.data)
//   });

export default {
  baseUrl: baseUrl,
  fetchPost(url, params = {}) {
    console.log(params)
    return new Promise((resolve, reject) => {
      params = {
        data: params, 
        token: storage.getSession('token')
      }
      axios.post(
        url, 
        params
        ).then(res => {
        console.log(res)
        if (res.data.code == "0") {
          resolve(res.data.data);
        } else if (res.data.code == "-1") {
          window.vm.$message.warning(res.data.msg)
          setTimeout(() => {
            router.push(`/login`)
          }, 1000)
        } else {
          window.vm.$message.warning(res.data.msg)
        }
      }).catch(error => {
          window.vm.$message.error('系统错误，请稍后重试')
        reject(error)
      })
    })
  },
  uploadPost(url, params = {}) {
    console.log(params)
    return new Promise((resolve, reject) => {
      axios.post(
        url, 
        params
        ).then(res => {
        console.log(res)
        if (res.data.code == "0") {
          resolve(res.data.data);
        } else if (res.data.code == "-1") {
          // this.$message.warning(res.data.msg)
          console.log(res.data.msg)
          setTimeout(() => {
            router.push(`/login`)
          }, 1000)
        } else {
          console.log(res.data.msg)
          // this.$message.warning(res.data.msg)
        }
      }).catch(error => {
          console.log('系统错误，请稍后重试')
          // this.$message.warning('系统错误，请稍后重试')
        reject(error)
      })
    })
  }
}
